home *** CD-ROM | disk | FTP | other *** search
/ 9-Digit Zip Code Directory / 9-Digit Zip Code Directory (American Business Information) (ABIZIP-12).ISO / z4src.zip / UI_EVT.HPP < prev    next >
Text File  |  1993-08-16  |  38KB  |  1,067 lines

  1. //    Zinc Interface Library - UI_EVT.HPP
  2. //    COPYRIGHT (C) 1990-1993.  All Rights Reserved.
  3. //    Zinc Software Incorporated.  Pleasant Grove, Utah  USA
  4.  
  5. #if !defined(UI_EVT_HPP)
  6. #    define UI_EVT_HPP
  7. #    if !defined(UI_DSP_HPP)
  8. #        if defined(__OS2__)
  9. #            if !defined(INCL_WININPUT)
  10. #                define INCL_WININPUT
  11. #            endif
  12. #            if !defined(INCL_WINMESSAGEMGR)
  13. #                define INCL_WINMESSAGEMGR
  14. #            endif
  15. #        endif
  16. #        include <ui_dsp.hpp>
  17. #    endif
  18.  
  19. // ----- Compiler/Environment Dependencies ----------------------------------
  20.  
  21. #if defined(ZIL_MSDOS)
  22.     typedef unsigned MSG;
  23.     typedef unsigned RAW_CODE;
  24.     typedef int EVENT_TYPE;
  25. #elif defined(ZIL_MSWINDOWS) && defined(WIN32)
  26.     typedef unsigned RAW_CODE;
  27.     typedef LRESULT EVENT_TYPE;
  28. #elif defined(ZIL_MSWINDOWS)
  29.     typedef unsigned RAW_CODE;
  30.     typedef long EVENT_TYPE;
  31. #elif defined(ZIL_OS2)
  32.     typedef unsigned RAW_CODE;
  33.     typedef long EVENT_TYPE;
  34. #elif defined(ZIL_MOTIF)
  35.     typedef XEvent MSG;
  36.     typedef unsigned long RAW_CODE;
  37.     typedef long EVENT_TYPE;
  38. #endif
  39.  
  40. // --- Version 2.0 and 1.0 compatibility ---
  41. #define UI_CURSOR            UID_CURSOR
  42. #define UI_BIOS_KEYBOARD    UID_KEYBOARD
  43. #define UI_MS_MOUSE            UID_MOUSE
  44. #define S_SCROLL_VERTICAL    S_VSCROLL
  45. #define S_SCROLL_HORIZONTAL    S_HSCROLL
  46. #define S_SCROLL_VERTICAL_SET    S_VSCROLL_SET
  47. #define S_SCROLL_HORIZONTAL_SET    S_HSCROLL_SET
  48. #define S_DELETE            S_CLOSE
  49. #define S_DELETE_LEVEL        S_CLOSE_TEMPORARY
  50. #define S_CLEAR                S_DEINITIALIZE
  51. #define S_DEFINE_REGION        S_REGION_DEFINE
  52. #define S_CANCEL            L_CANCEL
  53. #define L_ALT_KEY            S_ALT_KEY
  54. #define S_RESTORE            L_RESTORE
  55. #define S_MINIMIZE            L_MINIMIZE
  56. #define S_MAXIMIZE            L_MAXIMIZE
  57.  
  58. // --- value ---
  59. #if defined(USE_RAW_KEYS)
  60. #if defined(ZIL_MSDOS)
  61. const RAW_CODE ESCAPE                    = 0x011B;    // Miscellaneous keys
  62. const RAW_CODE ENTER                    = 0x1C0D;
  63. const RAW_CODE SPACE                    = 0x3920;
  64. const RAW_CODE BACKSPACE                = 0x0E08;
  65. const RAW_CODE CTRL_BACKSPACE            = 0x0E7F;
  66. const RAW_CODE ALT_BACKSPACE            = 0x0E00;
  67. const RAW_CODE TAB                        = 0x0F09;
  68. const RAW_CODE CTRL_TAB                    = 0x9400;
  69. const RAW_CODE BACKTAB                    = 0x0F00;
  70.  
  71. const RAW_CODE CTRL_BREAK                = 0x0000;
  72. const RAW_CODE CTRL_C                    = 0x2E03;
  73.  
  74. const RAW_CODE ALT_ESCAPE                = 0x0100;
  75. const RAW_CODE ALT_PERIOD                = 0x3400;
  76. const RAW_CODE ALT_SPACE                = 0x3920;
  77. const RAW_CODE ALT_WHITE_MINUS            = 0x8200;
  78. const RAW_CODE ALT_WHITE_PLUS            = 0x8300;
  79.  
  80. const RAW_CODE ALT_A                    = 0x1E00;
  81. const RAW_CODE ALT_B                    = 0x3000;
  82. const RAW_CODE ALT_C                    = 0x2E00;
  83. const RAW_CODE ALT_D                    = 0x2000;
  84. const RAW_CODE ALT_E                    = 0x1200;
  85. const RAW_CODE ALT_F                    = 0x2100;
  86. const RAW_CODE ALT_G                    = 0x2200;
  87. const RAW_CODE ALT_H                    = 0x2300;
  88. const RAW_CODE ALT_I                    = 0x1700;
  89. const RAW_CODE ALT_J                    = 0x2400;
  90. const RAW_CODE ALT_K                    = 0x2500;
  91. const RAW_CODE ALT_L                    = 0x2600;
  92. const RAW_CODE ALT_M                    = 0x3200;
  93. const RAW_CODE ALT_N                    = 0x3100;
  94. const RAW_CODE ALT_O                    = 0x1800;
  95. const RAW_CODE ALT_P                    = 0x1900;
  96. const RAW_CODE ALT_Q                    = 0x1000;
  97. const RAW_CODE ALT_R                    = 0x1300;
  98. const RAW_CODE ALT_S                    = 0x1F00;
  99. const RAW_CODE ALT_T                    = 0x1400;
  100. const RAW_CODE ALT_U                    = 0x1600;
  101. const RAW_CODE ALT_V                    = 0x2F00;
  102. const RAW_CODE ALT_W                    = 0x1100;
  103. const RAW_CODE ALT_X                    = 0x2D00;
  104. const RAW_CODE ALT_Y                    = 0x1500;
  105. const RAW_CODE ALT_Z                    = 0x2C00;
  106.  
  107. const RAW_CODE ALT_1                    = 0x7800;
  108. const RAW_CODE ALT_2                    = 0x7900;
  109. const RAW_CODE ALT_3                    = 0x7A00;
  110. const RAW_CODE ALT_4                    = 0x7B00;
  111. const RAW_CODE ALT_5                    = 0x7C00;
  112. const RAW_CODE ALT_6                    = 0x7D00;
  113. const RAW_CODE ALT_7                    = 0x7E00;
  114. const RAW_CODE ALT_8                    = 0x7F00;
  115. const RAW_CODE ALT_9                    = 0x8000;
  116. const RAW_CODE ALT_0                    = 0x8100;
  117.  
  118. const RAW_CODE GRAY_ENTER                = 0xE00D;    // Grey keys
  119. const RAW_CODE GRAY_UP_ARROW            = 0x48E0;
  120. const RAW_CODE GRAY_DOWN_ARROW            = 0x50E0;
  121. const RAW_CODE GRAY_LEFT_ARROW            = 0x4BE0;
  122. const RAW_CODE GRAY_RIGHT_ARROW            = 0x4DE0;
  123. const RAW_CODE GRAY_INSERT                = 0x52E0;
  124. const RAW_CODE GRAY_DELETE                = 0x53E0;
  125. const RAW_CODE GRAY_HOME                = 0x47E0;
  126. const RAW_CODE GRAY_END                    = 0x4FE0;
  127. const RAW_CODE GRAY_PGUP                = 0x49E0;
  128. const RAW_CODE GRAY_PGDN                = 0x51E0;
  129. const RAW_CODE GRAY_DIVIDE                = 0xE02F;
  130. const RAW_CODE GRAY_MULTIPLY            = 0x372A;
  131. const RAW_CODE GRAY_PLUS                = 0x4E2B;
  132. const RAW_CODE GRAY_MINUS                = 0x4A2D;
  133.  
  134. const RAW_CODE CTRL_GRAY_UP_ARROW        = 0x8DE0;
  135. const RAW_CODE CTRL_GRAY_DOWN_ARROW        = 0x91E0;
  136. const RAW_CODE CTRL_GRAY_LEFT_ARROW        = 0x73E0;
  137. const RAW_CODE CTRL_GRAY_RIGHT_ARROW    = 0x74E0;
  138. const RAW_CODE CTRL_GRAY_INSERT            = 0x92E0;
  139. const RAW_CODE CTRL_GRAY_DELETE            = 0x93E0;
  140. const RAW_CODE CTRL_GRAY_HOME            = 0x77E0;
  141. const RAW_CODE CTRL_GRAY_END            = 0x75E0;
  142. const RAW_CODE CTRL_GRAY_PGUP            = 0x84E0;
  143. const RAW_CODE CTRL_GRAY_PGDN            = 0x76E0;
  144. const RAW_CODE CTRL_GRAY_DIVIDE            = 0x9500;
  145. const RAW_CODE CTRL_GRAY_MULTIPLY        = 0x9600;
  146. const RAW_CODE CTRL_GRAY_PLUS            = 0x9000;
  147. const RAW_CODE CTRL_GRAY_MINUS            = 0x8E00;
  148.  
  149. const RAW_CODE ALT_GRAY_UP_ARROW        = 0x9800;
  150. const RAW_CODE ALT_GRAY_DOWN_ARROW        = 0xA000;
  151. const RAW_CODE ALT_GRAY_LEFT_ARROW        = 0x9B00;
  152. const RAW_CODE ALT_GRAY_RIGHT_ARROW        = 0x9D00;
  153. const RAW_CODE ALT_GRAY_INSERT            = 0xA200;
  154. const RAW_CODE ALT_GRAY_DELETE            = 0xA300;
  155. const RAW_CODE ALT_GRAY_HOME            = 0x9700;
  156. const RAW_CODE ALT_GRAY_END                = 0x9F00;
  157. const RAW_CODE ALT_GRAY_PGUP            = 0x9900;
  158. const RAW_CODE ALT_GRAY_PGDN            = 0xA100;
  159. const RAW_CODE ALT_GRAY_DIVIDE            = 0xA400;
  160. const RAW_CODE ALT_GRAY_MULTIPLY        = 0x3700;
  161. const RAW_CODE ALT_GRAY_PLUS            = 0x4E00;
  162. const RAW_CODE ALT_GRAY_MINUS            = 0x4A00;
  163.  
  164. const RAW_CODE WHITE_UP_ARROW            = 0x4800;    // White keys
  165. const RAW_CODE WHITE_DOWN_ARROW            = 0x5000;
  166. const RAW_CODE WHITE_LEFT_ARROW            = 0x4B00;
  167. const RAW_CODE WHITE_RIGHT_ARROW        = 0x4D00;
  168. const RAW_CODE WHITE_INSERT                = 0x5200;
  169. const RAW_CODE WHITE_DELETE                = 0x5300;
  170. const RAW_CODE WHITE_HOME                = 0x4700;
  171. const RAW_CODE WHITE_END                = 0x4F00;
  172. const RAW_CODE WHITE_PGUP                = 0x4900;
  173. const RAW_CODE WHITE_PGDN                = 0x5100;
  174. const RAW_CODE WHITE_CENTER                = 0x4C00;
  175.  
  176. const RAW_CODE CTRL_WHITE_UP_ARROW        = 0x8D00;
  177. const RAW_CODE CTRL_WHITE_DOWN_ARROW    = 0x9100;
  178. const RAW_CODE CTRL_WHITE_LEFT_ARROW    = 0x7300;
  179. const RAW_CODE CTRL_WHITE_RIGHT_ARROW    = 0x7400;
  180. const RAW_CODE CTRL_WHITE_INSERT        = 0x9200;
  181. const RAW_CODE CTRL_WHITE_DELETE        = 0x9300;
  182. const RAW_CODE CTRL_WHITE_HOME            = 0x7700;
  183. const RAW_CODE CTRL_WHITE_END            = 0x7500;
  184. const RAW_CODE CTRL_WHITE_PGUP            = 0x8400;
  185. const RAW_CODE CTRL_WHITE_PGDN            = 0x7600;
  186. const RAW_CODE CTRL_WHITE_CENTER        = 0x8F00;
  187.  
  188. const RAW_CODE F1                        = 0x3B00;    // Function keys
  189. const RAW_CODE F2                        = 0x3C00;
  190. const RAW_CODE F3                        = 0x3D00;
  191. const RAW_CODE F4                        = 0x3E00;
  192. const RAW_CODE F5                        = 0x3F00;
  193. const RAW_CODE F6                        = 0x4000;
  194. const RAW_CODE F7                        = 0x4100;
  195. const RAW_CODE F8                        = 0x4200;
  196. const RAW_CODE F9                        = 0x4300;
  197. const RAW_CODE F10                        = 0x4400;
  198. const RAW_CODE F11                        = 0x8500;
  199. const RAW_CODE F12                        = 0x8600;
  200.  
  201. const RAW_CODE SHIFT_F1                    = 0x5400;
  202. const RAW_CODE SHIFT_F2                    = 0x5500;
  203. const RAW_CODE SHIFT_F3                    = 0x5600;
  204. const RAW_CODE SHIFT_F4                    = 0x5700;
  205. const RAW_CODE SHIFT_F5                    = 0x5800;
  206. const RAW_CODE SHIFT_F6                    = 0x5900;
  207. const RAW_CODE SHIFT_F7                    = 0x5A00;
  208. const RAW_CODE SHIFT_F8                    = 0x5B00;
  209. const RAW_CODE SHIFT_F9                    = 0x5C00;
  210. const RAW_CODE SHIFT_F10                = 0x5D00;
  211. const RAW_CODE SHIFT_F11                = 0x8700;
  212. const RAW_CODE SHIFT_F12                = 0x8800;
  213.  
  214. const RAW_CODE CTRL_F1                    = 0x5E00;
  215. const RAW_CODE CTRL_F2                    = 0x5F00;
  216. const RAW_CODE CTRL_F3                    = 0x6000;
  217. const RAW_CODE CTRL_F4                    = 0x6100;
  218. const RAW_CODE CTRL_F5                    = 0x6200;
  219. const RAW_CODE CTRL_F6                    = 0x6300;
  220. const RAW_CODE CTRL_F7                    = 0x6400;
  221. const RAW_CODE CTRL_F8                    = 0x6500;
  222. const RAW_CODE CTRL_F9                    = 0x6600;
  223. const RAW_CODE CTRL_F10                    = 0x6700;
  224. const RAW_CODE CTRL_F11                    = 0x8900;
  225. const RAW_CODE CTRL_F12                    = 0x8A00;
  226.  
  227. const RAW_CODE ALT_F1                    = 0x6800;
  228. const RAW_CODE ALT_F2                    = 0x6900;
  229. const RAW_CODE ALT_F3                    = 0x6A00;
  230. const RAW_CODE ALT_F4                    = 0x6B00;
  231. const RAW_CODE ALT_F5                    = 0x6C00;
  232. const RAW_CODE ALT_F6                    = 0x6D00;
  233. const RAW_CODE ALT_F7                    = 0x6E00;
  234. const RAW_CODE ALT_F8                    = 0x6F00;
  235. const RAW_CODE ALT_F9                    = 0x7000;
  236. const RAW_CODE ALT_F10                    = 0x7100;
  237. const RAW_CODE ALT_F11                    = 0x8B00;
  238. const RAW_CODE ALT_F12                    = 0x8C00;
  239. #elif defined(ZIL_MSWINDOWS)
  240. const RAW_CODE ESCAPE                    = 0x001B;    // Miscellaneous keys
  241. const RAW_CODE ENTER                    = 0x000D;
  242. const RAW_CODE SPACE                    = 0x0020;
  243. const RAW_CODE BACKSPACE                = 0x0008;
  244. const RAW_CODE CTRL_BACKSPACE            = 0x0408;
  245. const RAW_CODE ALT_BACKSPACE            = 0x0808;
  246. const RAW_CODE TAB                        = 0x0009;
  247. const RAW_CODE CTRL_TAB                    = 0x0409;
  248. const RAW_CODE BACKTAB                    = 0x0309;
  249.  
  250. const RAW_CODE CTRL_BREAK                = 0x0403;
  251. const RAW_CODE CTRL_C                    = 0x0443;
  252.  
  253. const RAW_CODE ALT_ESCAPE                = 0x081B;
  254. const RAW_CODE ALT_PERIOD                = 0x08BE;
  255. const RAW_CODE ALT_SPACE                = 0x0820;
  256. const RAW_CODE ALT_WHITE_MINUS            = 0x08BD;
  257. const RAW_CODE ALT_WHITE_PLUS            = 0x08BB;
  258.  
  259. const RAW_CODE ALT_A                    = 0x0861;
  260. const RAW_CODE ALT_B                    = 0x0862;
  261. const RAW_CODE ALT_C                    = 0x0863;
  262. const RAW_CODE ALT_D                    = 0x0864;
  263. const RAW_CODE ALT_E                    = 0x0865;
  264. const RAW_CODE ALT_F                    = 0x0866;
  265. const RAW_CODE ALT_G                    = 0x0867;
  266. const RAW_CODE ALT_H                    = 0x0868;
  267. const RAW_CODE ALT_I                    = 0x0869;
  268. const RAW_CODE ALT_J                    = 0x086A;
  269. const RAW_CODE ALT_K                    = 0x086B;
  270. const RAW_CODE ALT_L                    = 0x086C;
  271. const RAW_CODE ALT_M                    = 0x086D;
  272. const RAW_CODE ALT_N                    = 0x086E;
  273. const RAW_CODE ALT_O                    = 0x086F;
  274. const RAW_CODE ALT_P                    = 0x0870;
  275. const RAW_CODE ALT_Q                    = 0x0871;
  276. const RAW_CODE ALT_R                    = 0x0872;
  277. const RAW_CODE ALT_S                    = 0x0873;
  278. const RAW_CODE ALT_T                    = 0x0874;
  279. const RAW_CODE ALT_U                    = 0x0875;
  280. const RAW_CODE ALT_V                    = 0x0876;
  281. const RAW_CODE ALT_W                    = 0x0877;
  282. const RAW_CODE ALT_X                    = 0x0878;
  283. const RAW_CODE ALT_Y                    = 0x0879;
  284. const RAW_CODE ALT_Z                    = 0x087A;
  285.  
  286. const RAW_CODE ALT_1                    = 0x0831;
  287. const RAW_CODE ALT_2                    = 0x0832;
  288. const RAW_CODE ALT_3                    = 0x0833;
  289. const RAW_CODE ALT_4                    = 0x0834;
  290. const RAW_CODE ALT_5                    = 0x0835;
  291. const RAW_CODE ALT_6                    = 0x0836;
  292. const RAW_CODE ALT_7                    = 0x0837;
  293. const RAW_CODE ALT_8                    = 0x0838;
  294. const RAW_CODE ALT_9                    = 0x0839;
  295. const RAW_CODE ALT_0                    = 0x0840;
  296.  
  297. const RAW_CODE GRAY_ENTER                = 0x000D;    // Grey keys
  298. const RAW_CODE GRAY_UP_ARROW            = 0x0026;
  299. const RAW_CODE GRAY_DOWN_ARROW            = 0x0028;
  300. const RAW_CODE GRAY_LEFT_ARROW            = 0x0025;
  301. const RAW_CODE GRAY_RIGHT_ARROW            = 0x0027;
  302. const RAW_CODE GRAY_INSERT                = 0x002D;
  303. const RAW_CODE GRAY_DELETE                = 0x002E;
  304. const RAW_CODE GRAY_HOME                = 0x0024;
  305. const RAW_CODE GRAY_END                    = 0x0023;
  306. const RAW_CODE GRAY_PGUP                = 0x0021;
  307. const RAW_CODE GRAY_PGDN                = 0x0022;
  308. const RAW_CODE GRAY_DIVIDE                = 0x006F;
  309. const RAW_CODE GRAY_MULTIPLY            = 0x006A;
  310. const RAW_CODE GRAY_PLUS                = 0x006B;
  311. const RAW_CODE GRAY_MINUS                = 0x006D;
  312.  
  313. const RAW_CODE CTRL_GRAY_UP_ARROW        = 0x0426;
  314. const RAW_CODE CTRL_GRAY_DOWN_ARROW        = 0x0428;
  315. const RAW_CODE CTRL_GRAY_LEFT_ARROW        = 0x0425;
  316. const RAW_CODE CTRL_GRAY_RIGHT_ARROW    = 0x0427;
  317. const RAW_CODE CTRL_GRAY_INSERT            = 0x042D;
  318. const RAW_CODE CTRL_GRAY_DELETE            = 0x042E;
  319. const RAW_CODE CTRL_GRAY_HOME            = 0x0424;
  320. const RAW_CODE CTRL_GRAY_END            = 0x0423;
  321. const RAW_CODE CTRL_GRAY_PGUP            = 0x0421;
  322. const RAW_CODE CTRL_GRAY_PGDN            = 0x0422;
  323. const RAW_CODE CTRL_GRAY_DIVIDE            = 0x046F;
  324. const RAW_CODE CTRL_GRAY_MULTIPLY        = 0x046A;
  325. const RAW_CODE CTRL_GRAY_PLUS            = 0x046B;
  326. const RAW_CODE CTRL_GRAY_MINUS            = 0x046D;
  327.  
  328. const RAW_CODE ALT_GRAY_UP_ARROW        = 0x0826;
  329. const RAW_CODE ALT_GRAY_DOWN_ARROW        = 0x0828;
  330. const RAW_CODE ALT_GRAY_LEFT_ARROW        = 0x0825;
  331. const RAW_CODE ALT_GRAY_RIGHT_ARROW        = 0x0827;
  332. const RAW_CODE ALT_GRAY_INSERT            = 0x082D;
  333. const RAW_CODE ALT_GRAY_DELETE            = 0x082E;
  334. const RAW_CODE ALT_GRAY_HOME            = 0x0824;
  335. const RAW_CODE ALT_GRAY_END                = 0x0823;
  336. const RAW_CODE ALT_GRAY_PGUP            = 0x0821;
  337. const RAW_CODE ALT_GRAY_PGDN            = 0x0822;
  338. const RAW_CODE ALT_GRAY_DIVIDE            = 0x086F;
  339. const RAW_CODE ALT_GRAY_MULTIPLY        = 0x086A;
  340. const RAW_CODE ALT_GRAY_PLUS            = 0x086B;
  341. const RAW_CODE ALT_GRAY_MINUS            = 0x086D;
  342.  
  343. const RAW_CODE WHITE_UP_ARROW            = 0x0026;    // White keys
  344. const RAW_CODE WHITE_DOWN_ARROW            = 0x0028;
  345. const RAW_CODE WHITE_LEFT_ARROW            = 0x0025;
  346. const RAW_CODE WHITE_RIGHT_ARROW        = 0x0027;
  347. const RAW_CODE WHITE_INSERT                = 0x002D;
  348. const RAW_CODE WHITE_DELETE                = 0x002E;
  349. const RAW_CODE WHITE_HOME                = 0x0024;
  350. const RAW_CODE WHITE_END                = 0x0023;
  351. const RAW_CODE WHITE_PGUP                = 0x0021;
  352. const RAW_CODE WHITE_PGDN                = 0x0022;
  353. const RAW_CODE WHITE_CENTER                = 0x002A;
  354.  
  355. const RAW_CODE CTRL_WHITE_UP_ARROW        = 0x0426;
  356. const RAW_CODE CTRL_WHITE_DOWN_ARROW    = 0x0428;
  357. const RAW_CODE CTRL_WHITE_LEFT_ARROW    = 0x0425;
  358. const RAW_CODE CTRL_WHITE_RIGHT_ARROW    = 0x0427;
  359. const RAW_CODE CTRL_WHITE_INSERT        = 0x042D;
  360. const RAW_CODE CTRL_WHITE_DELETE        = 0x042E;
  361. const RAW_CODE CTRL_WHITE_HOME            = 0x0424;
  362. const RAW_CODE CTRL_WHITE_END            = 0x0423;
  363. const RAW_CODE CTRL_WHITE_PGUP            = 0x0421;
  364. const RAW_CODE CTRL_WHITE_PGDN            = 0x0422;
  365. const RAW_CODE CTRL_WHITE_CENTER        = 0x042A;
  366.  
  367. const RAW_CODE F1                        = 0x0070;    // Function keys
  368. const RAW_CODE F2                        = 0x0071;
  369. const RAW_CODE F3                        = 0x0072;
  370. const RAW_CODE F4                        = 0x0073;
  371. const RAW_CODE F5                        = 0x0074;
  372. const RAW_CODE F6                        = 0x0075;
  373. const RAW_CODE F7                        = 0x0076;
  374. const RAW_CODE F8                        = 0x0077;
  375. const RAW_CODE F9                        = 0x0078;
  376. const RAW_CODE F10                        = 0x0079;
  377. const RAW_CODE F11                        = 0x007A;
  378. const RAW_CODE F12                        = 0x007B;
  379.  
  380. const RAW_CODE SHIFT_F1                    = 0x0370;
  381. const RAW_CODE SHIFT_F2                    = 0x0371;
  382. const RAW_CODE SHIFT_F3                    = 0x0372;
  383. const RAW_CODE SHIFT_F4                    = 0x0373;
  384. const RAW_CODE SHIFT_F5                    = 0x0374;
  385. const RAW_CODE SHIFT_F6                    = 0x0375;
  386. const RAW_CODE SHIFT_F7                    = 0x0376;
  387. const RAW_CODE SHIFT_F8                    = 0x0377;
  388. const RAW_CODE SHIFT_F9                    = 0x0378;
  389. const RAW_CODE SHIFT_F10                = 0x0379;
  390. const RAW_CODE SHIFT_F11                = 0x037A;
  391. const RAW_CODE SHIFT_F12                = 0x037B;
  392.  
  393. const RAW_CODE CTRL_F1                    = 0x0470;
  394. const RAW_CODE CTRL_F2                    = 0x0471;
  395. const RAW_CODE CTRL_F3                    = 0x0472;
  396. const RAW_CODE CTRL_F4                    = 0x0473;
  397. const RAW_CODE CTRL_F5                    = 0x0474;
  398. const RAW_CODE CTRL_F6                    = 0x0475;
  399. const RAW_CODE CTRL_F7                    = 0x0476;
  400. const RAW_CODE CTRL_F8                    = 0x0477;
  401. const RAW_CODE CTRL_F9                    = 0x0478;
  402. const RAW_CODE CTRL_F10                    = 0x0479;
  403. const RAW_CODE CTRL_F11                    = 0x047A;
  404. const RAW_CODE CTRL_F12                    = 0x047B;
  405.  
  406. const RAW_CODE ALT_F1                    = 0x0870;
  407. const RAW_CODE ALT_F2                    = 0x0871;
  408. const RAW_CODE ALT_F3                    = 0x0872;
  409. const RAW_CODE ALT_F4                    = 0x0873;
  410. const RAW_CODE ALT_F5                    = 0x0874;
  411. const RAW_CODE ALT_F6                    = 0x0875;
  412. const RAW_CODE ALT_F7                    = 0x0876;
  413. const RAW_CODE ALT_F8                    = 0x0877;
  414. const RAW_CODE ALT_F9                    = 0x0878;
  415. const RAW_CODE ALT_F10                    = 0x0879;
  416. const RAW_CODE ALT_F11                    = 0x087A;
  417. const RAW_CODE ALT_F12                    = 0x087B;
  418. #elif defined(ZIL_OS2)
  419. const RAW_CODE ESCAPE                    = 0x001B;    // down-action scan code
  420. const RAW_CODE ENTER                    = 0x000D;    // down-action scan code
  421. const RAW_CODE SPACE                    = 0x3920;    // up-action scan code
  422. const RAW_CODE BACKSPACE                = 0x0E08;    // up-action scan code
  423. const RAW_CODE CTRL_BACKSPACE            = 0x0408;    // down-action scan code
  424. const RAW_CODE ALT_BACKSPACE            = 0x0808;    // down-action scan code
  425. const RAW_CODE TAB                        = 0x0009;    // down-action scan code
  426. const RAW_CODE CTRL_TAB                    = 0x0409;    // down-action scan code
  427. const RAW_CODE BACKTAB                    = 0x0309;    // down-action scan code
  428.  
  429. const RAW_CODE CTRL_BREAK                = 0x0000;    // down-action scan code
  430. const RAW_CODE CTRL_C                    = 0x2E03;    // down-action scan code
  431.  
  432. const RAW_CODE ALT_ESCAPE                = 0x0100;    // down-action scan code
  433. const RAW_CODE ALT_PERIOD                = 0x3400;
  434. const RAW_CODE ALT_SPACE                = 0x3920;
  435. const RAW_CODE ALT_WHITE_MINUS            = 0x8200;
  436. const RAW_CODE ALT_WHITE_PLUS            = 0x8300;
  437.  
  438. const RAW_CODE ALT_A                    = 0x1E00;    // down-action scan codes
  439. const RAW_CODE ALT_B                    = 0x3000;
  440. const RAW_CODE ALT_C                    = 0x2E00;
  441. const RAW_CODE ALT_D                    = 0x2000;
  442. const RAW_CODE ALT_E                    = 0x1200;
  443. const RAW_CODE ALT_F                    = 0x2100;
  444. const RAW_CODE ALT_G                    = 0x2200;
  445. const RAW_CODE ALT_H                    = 0x2300;
  446. const RAW_CODE ALT_I                    = 0x1700;
  447. const RAW_CODE ALT_J                    = 0x2400;
  448. const RAW_CODE ALT_K                    = 0x2500;
  449. const RAW_CODE ALT_L                    = 0x2600;
  450. const RAW_CODE ALT_M                    = 0x3200;
  451. const RAW_CODE ALT_N                    = 0x3100;
  452. const RAW_CODE ALT_O                    = 0x1800;
  453. const RAW_CODE ALT_P                    = 0x1900;
  454. const RAW_CODE ALT_Q                    = 0x1000;
  455. const RAW_CODE ALT_R                    = 0x1300;
  456. const RAW_CODE ALT_S                    = 0x1F00;
  457. const RAW_CODE ALT_T                    = 0x1400;
  458. const RAW_CODE ALT_U                    = 0x1600;
  459. const RAW_CODE ALT_V                    = 0x2F00;
  460. const RAW_CODE ALT_W                    = 0x1100;
  461. const RAW_CODE ALT_X                    = 0x2D00;
  462. const RAW_CODE ALT_Y                    = 0x1500;
  463. const RAW_CODE ALT_Z                    = 0x2C00;
  464.  
  465. const RAW_CODE ALT_1                    = 0x7800;    // down-action scan codes
  466. const RAW_CODE ALT_2                    = 0x7900;
  467. const RAW_CODE ALT_3                    = 0x7A00;
  468. const RAW_CODE ALT_4                    = 0x7B00;
  469. const RAW_CODE ALT_5                    = 0x7C00;
  470. const RAW_CODE ALT_6                    = 0x7D00;
  471. const RAW_CODE ALT_7                    = 0x7E00;
  472. const RAW_CODE ALT_8                    = 0x7F00;
  473. const RAW_CODE ALT_9                    = 0x8000;
  474. const RAW_CODE ALT_0                    = 0x8100;
  475.  
  476. const RAW_CODE GRAY_ENTER                = 0xE00D;    // Grey keys
  477. const RAW_CODE GRAY_UP_ARROW            = 0x48E0;
  478. const RAW_CODE GRAY_DOWN_ARROW            = 0x50E0;
  479. const RAW_CODE GRAY_LEFT_ARROW            = 0x4BE0;
  480. const RAW_CODE GRAY_RIGHT_ARROW            = 0x4DE0;
  481. const RAW_CODE GRAY_INSERT                = 0x52E0;
  482. const RAW_CODE GRAY_DELETE                = 0x53E0;
  483. const RAW_CODE GRAY_HOME                = 0x47E0;
  484. const RAW_CODE GRAY_END                    = 0x4FE0;
  485. const RAW_CODE GRAY_PGUP                = 0x49E0;
  486. const RAW_CODE GRAY_PGDN                = 0x51E0;
  487. const RAW_CODE GRAY_DIVIDE                = 0xE02F;
  488. const RAW_CODE GRAY_MULTIPLY            = 0x372A;
  489. const RAW_CODE GRAY_PLUS                = 0x4E2B;
  490. const RAW_CODE GRAY_MINUS                = 0x4A2D;
  491.  
  492. const RAW_CODE CTRL_GRAY_UP_ARROW        = 0x8DE0;
  493. const RAW_CODE CTRL_GRAY_DOWN_ARROW        = 0x91E0;
  494. const RAW_CODE CTRL_GRAY_LEFT_ARROW        = 0x73E0;
  495. const RAW_CODE CTRL_GRAY_RIGHT_ARROW    = 0x74E0;
  496. const RAW_CODE CTRL_GRAY_INSERT            = 0x92E0;
  497. const RAW_CODE CTRL_GRAY_DELETE            = 0x93E0;
  498. const RAW_CODE CTRL_GRAY_HOME            = 0x77E0;
  499. const RAW_CODE CTRL_GRAY_END            = 0x75E0;
  500. const RAW_CODE CTRL_GRAY_PGUP            = 0x84E0;
  501. const RAW_CODE CTRL_GRAY_PGDN            = 0x76E0;
  502. const RAW_CODE CTRL_GRAY_DIVIDE            = 0x9500;
  503. const RAW_CODE CTRL_GRAY_MULTIPLY        = 0x9600;
  504. const RAW_CODE CTRL_GRAY_PLUS            = 0x9000;
  505. const RAW_CODE CTRL_GRAY_MINUS            = 0x8E00;
  506.  
  507. const RAW_CODE ALT_GRAY_UP_ARROW        = 0x9800;
  508. const RAW_CODE ALT_GRAY_DOWN_ARROW        = 0xA000;
  509. const RAW_CODE ALT_GRAY_LEFT_ARROW        = 0x9B00;
  510. const RAW_CODE ALT_GRAY_RIGHT_ARROW        = 0x9D00;
  511. const RAW_CODE ALT_GRAY_INSERT            = 0xA200;
  512. const RAW_CODE ALT_GRAY_DELETE            = 0xA300;
  513. const RAW_CODE ALT_GRAY_HOME            = 0x9700;
  514. const RAW_CODE ALT_GRAY_END                = 0x9F00;
  515. const RAW_CODE ALT_GRAY_PGUP            = 0x9900;
  516. const RAW_CODE ALT_GRAY_PGDN            = 0xA100;
  517. const RAW_CODE ALT_GRAY_DIVIDE            = 0xA400;
  518. const RAW_CODE ALT_GRAY_MULTIPLY        = 0x3700;
  519. const RAW_CODE ALT_GRAY_PLUS            = 0x4E00;
  520. const RAW_CODE ALT_GRAY_MINUS            = 0x4A00;
  521.  
  522. const RAW_CODE WHITE_UP_ARROW            = 0x4800;    // White keys
  523. const RAW_CODE WHITE_DOWN_ARROW            = 0x5000;
  524. const RAW_CODE WHITE_LEFT_ARROW            = 0x4B00;
  525. const RAW_CODE WHITE_RIGHT_ARROW        = 0x4D00;
  526. const RAW_CODE WHITE_INSERT                = 0x5200;
  527. const RAW_CODE WHITE_DELETE                = 0x5300;
  528. const RAW_CODE WHITE_HOME                = 0x4700;
  529. const RAW_CODE WHITE_END                = 0x4F00;
  530. const RAW_CODE WHITE_PGUP                = 0x4900;
  531. const RAW_CODE WHITE_PGDN                = 0x5100;
  532. const RAW_CODE WHITE_CENTER                = 0x4C00;
  533.  
  534. const RAW_CODE CTRL_WHITE_UP_ARROW        = 0x8D00;
  535. const RAW_CODE CTRL_WHITE_DOWN_ARROW    = 0x9100;
  536. const RAW_CODE CTRL_WHITE_LEFT_ARROW    = 0x7300;
  537. const RAW_CODE CTRL_WHITE_RIGHT_ARROW    = 0x7400;
  538. const RAW_CODE CTRL_WHITE_INSERT        = 0x9200;
  539. const RAW_CODE CTRL_WHITE_DELETE        = 0x9300;
  540. const RAW_CODE CTRL_WHITE_HOME            = 0x7700;
  541. const RAW_CODE CTRL_WHITE_END            = 0x7500;
  542. const RAW_CODE CTRL_WHITE_PGUP            = 0x8400;
  543. const RAW_CODE CTRL_WHITE_PGDN            = 0x7600;
  544. const RAW_CODE CTRL_WHITE_CENTER        = 0x8F00;
  545.  
  546. const RAW_CODE F1                        = 0x3B00;    // Function keys
  547. const RAW_CODE F2                        = 0x3C00;
  548. const RAW_CODE F3                        = 0x3D00;
  549. const RAW_CODE F4                        = 0x3E00;
  550. const RAW_CODE F5                        = 0x3F00;
  551. const RAW_CODE F6                        = 0x4000;
  552. const RAW_CODE F7                        = 0x4100;
  553. const RAW_CODE F8                        = 0x4200;
  554. const RAW_CODE F9                        = 0x4300;
  555. const RAW_CODE F10                        = 0x4400;
  556. const RAW_CODE F11                        = 0x8500;
  557. const RAW_CODE F12                        = 0x8600;
  558.  
  559. const RAW_CODE SHIFT_F1                    = 0x5400;
  560. const RAW_CODE SHIFT_F2                    = 0x5500;
  561. const RAW_CODE SHIFT_F3                    = 0x5600;
  562. const RAW_CODE SHIFT_F4                    = 0x5700;
  563. const RAW_CODE SHIFT_F5                    = 0x5800;
  564. const RAW_CODE SHIFT_F6                    = 0x5900;
  565. const RAW_CODE SHIFT_F7                    = 0x5A00;
  566. const RAW_CODE SHIFT_F8                    = 0x5B00;
  567. const RAW_CODE SHIFT_F9                    = 0x5C00;
  568. const RAW_CODE SHIFT_F10                = 0x5D00;
  569. const RAW_CODE SHIFT_F11                = 0x8700;
  570. const RAW_CODE SHIFT_F12                = 0x8800;
  571.  
  572. const RAW_CODE CTRL_F1                    = 0x5E00;
  573. const RAW_CODE CTRL_F2                    = 0x5F00;
  574. const RAW_CODE CTRL_F3                    = 0x6000;
  575. const RAW_CODE CTRL_F4                    = 0x6100;
  576. const RAW_CODE CTRL_F5                    = 0x6200;
  577. const RAW_CODE CTRL_F6                    = 0x6300;
  578. const RAW_CODE CTRL_F7                    = 0x6400;
  579. const RAW_CODE CTRL_F8                    = 0x6500;
  580. const RAW_CODE CTRL_F9                    = 0x6600;
  581. const RAW_CODE CTRL_F10                    = 0x6700;
  582. const RAW_CODE CTRL_F11                    = 0x8900;
  583. const RAW_CODE CTRL_F12                    = 0x8A00;
  584.  
  585. const RAW_CODE ALT_F1                    = 0x6800;
  586. const RAW_CODE ALT_F2                    = 0x6900;
  587. const RAW_CODE ALT_F3                    = 0x6A00;
  588. const RAW_CODE ALT_F4                    = 0x6B00;
  589. const RAW_CODE ALT_F5                    = 0x6C00;
  590. const RAW_CODE ALT_F6                    = 0x6D00;
  591. const RAW_CODE ALT_F7                    = 0x6E00;
  592. const RAW_CODE ALT_F8                    = 0x6F00;
  593. const RAW_CODE ALT_F9                    = 0x7000;
  594. const RAW_CODE ALT_F10                    = 0x7100;
  595. const RAW_CODE ALT_F11                    = 0x8B00;
  596. const RAW_CODE ALT_F12                    = 0x8C00;
  597. #elif defined (ZIL_MOTIF)
  598. #include <X11/keysym.h>
  599. const RAW_CODE ESCAPE                    = XK_Escape;    // Miscellaneous keys
  600. const RAW_CODE ENTER                    = XK_Return;
  601. const RAW_CODE BACKSPACE                = XK_BackSpace;
  602. const RAW_CODE TAB                        = XK_Tab;
  603.  
  604. const RAW_CODE GRAY_ENTER                = XK_KP_Enter;    // Grey keys
  605. const RAW_CODE GRAY_UP_ARROW            = XK_Up;
  606. const RAW_CODE GRAY_DOWN_ARROW            = XK_Down;
  607. const RAW_CODE GRAY_LEFT_ARROW            = XK_Left;
  608. const RAW_CODE GRAY_RIGHT_ARROW            = XK_Right;
  609. const RAW_CODE GRAY_DIVIDE                = XK_KP_Divide;
  610. const RAW_CODE GRAY_MULTIPLY            = XK_KP_Multiply;
  611. const RAW_CODE GRAY_PLUS                = XK_KP_Add;
  612. const RAW_CODE GRAY_MINUS                = XK_KP_Subtract;
  613.  
  614. const RAW_CODE WHITE_UP_ARROW            = XK_Up;    // White keys
  615. const RAW_CODE WHITE_DOWN_ARROW            = XK_Down;
  616. const RAW_CODE WHITE_LEFT_ARROW            = XK_Left;
  617. const RAW_CODE WHITE_RIGHT_ARROW        = XK_Right;
  618.  
  619. const RAW_CODE F1                        = XK_F1;    // Function keys
  620. const RAW_CODE F2                        = XK_F2;
  621. const RAW_CODE F3                        = XK_F3;
  622. const RAW_CODE F4                        = XK_F4;
  623. const RAW_CODE F5                        = XK_F5;
  624. const RAW_CODE F6                        = XK_F6;
  625. const RAW_CODE F7                        = XK_F7;
  626. const RAW_CODE F8                        = XK_F8;
  627. const RAW_CODE F9                        = XK_F9;
  628. const RAW_CODE F10                        = XK_F10;
  629. const RAW_CODE F11                        = XK_F11;
  630. const RAW_CODE F12                        = XK_F12;
  631. #endif
  632. #endif
  633.  
  634. // ----- Special hotkey values ----------------------------------------------
  635. const UCHAR HOT_KEY_MAXIMIZE        = 252;
  636. const UCHAR HOT_KEY_MINIMIZE        = 253;
  637. const UCHAR HOT_KEY_SYSTEM        = 254;
  638. const UCHAR HOT_KEY_SUB_WINDOW        = 255;
  639.  
  640. // ----- Key Information ----------------------------------------------------
  641. // --- event.type is E_KEY
  642. // --- event.rawCode is the key shift state (high byte) and scan code (low byte)
  643. // --- event.key contains the key shift-state and scan-code
  644.  
  645. // --- shiftState ---
  646. const RAW_CODE S_SHIFT                    = 0x0003;    // left- or right-shift
  647. const RAW_CODE S_RIGHT_SHIFT            = 0x0001;
  648. const RAW_CODE S_LEFT_SHIFT                = 0x0002;
  649. const RAW_CODE S_CTRL                    = 0x0004;
  650. const RAW_CODE S_ALT                    = 0x0008;
  651. const RAW_CODE S_SCROLL_LOCK            = 0x0010;
  652. const RAW_CODE S_NUM_LOCK                = 0x0020;
  653. const RAW_CODE S_CAPS_LOCK                = 0x0040;
  654. const RAW_CODE S_INSERT                    = 0x0080;
  655.  
  656. struct EXPORT UI_KEY
  657. {
  658.     RAW_CODE shiftState;
  659.     RAW_CODE value;
  660. };
  661.  
  662. // ----- Mouse Information --------------------------------------------------
  663. // --- event.type is E_MOUSE
  664. // --- event.rawCode is the mouse shift state (high byte) and button status (low byte)
  665. // --- event.position.line and event.position.column contains the mouse position
  666.  
  667. const RAW_CODE M_LEFT                    = 0x0100;
  668. const RAW_CODE M_RIGHT                    = 0x0200;
  669. const RAW_CODE M_MIDDLE                    = 0x0400;
  670. const RAW_CODE M_TOP_CHANGE                = 0x0800;    // only used in sizing operation
  671. const RAW_CODE M_LEFT_CHANGE            = 0x1000;
  672. const RAW_CODE M_RIGHT_CHANGE            = 0x2000;
  673. const RAW_CODE M_MIDDLE_CHANGE            = 0x4000;
  674. const RAW_CODE M_BOTTOM_CHANGE            = 0x8000;    // only used in sizing operation
  675.  
  676. // ----- UI_SCROLL_INFORMATION ----------------------------------------------
  677.  
  678. struct EXPORT UI_SCROLL_INFORMATION
  679. {
  680.     int current, minimum, maximum, showing, delta;
  681. };
  682.  
  683. // ----- UI_EVENT -----------------------------------------------------------
  684. // --- values less than -999 reserved for future use.
  685. // --- values -999 through -1 reserved for LOGICAL_EVENT.
  686. // --- values 0 through 99 reserved for RAW_CODE.
  687. // --- values 100 through 9999 reserved for SYSTEM_EVENT.
  688. // --- values 10000+ available for programmer's use.
  689.  
  690. // --- DEVICE_TYPE ---
  691. typedef EVENT_TYPE DEVICE_TYPE;
  692. const DEVICE_TYPE E_DEVICE_FIRST        = 0;
  693. const DEVICE_TYPE E_DEVICE_LAST            = 99;
  694.  
  695. const DEVICE_TYPE E_MSWINDOWS            = 1;    // DEVICE events
  696. const DEVICE_TYPE E_OS2                    = 2;
  697. const DEVICE_TYPE E_MOTIF                = 3;
  698. const DEVICE_TYPE E_KEY                 = 10;
  699. const DEVICE_TYPE E_MOUSE                 = 30;
  700. const DEVICE_TYPE E_CURSOR                = 50;
  701. const DEVICE_TYPE E_DEVICE                = 99;
  702.  
  703. // --- SYSTEM_EVENT ---
  704. typedef EVENT_TYPE SYSTEM_EVENT;
  705. const SYSTEM_EVENT S_SYSTEM_FIRST        = -999;
  706. const SYSTEM_EVENT S_SYSTEM_LAST        = -1;
  707.  
  708. const SYSTEM_EVENT S_ERROR                = -1;    // No union information
  709. const SYSTEM_EVENT S_UNKNOWN            = -2;
  710. const SYSTEM_EVENT S_NO_OBJECT            = -3;
  711. const SYSTEM_EVENT S_MINIMIZE            = -4;
  712. const SYSTEM_EVENT S_MAXIMIZE            = -5;
  713. const SYSTEM_EVENT S_ALT_KEY            = -6;
  714. const SYSTEM_EVENT S_CONTINUE            = -7;
  715. const SYSTEM_EVENT S_ERROR_RESPONSE        = -8;
  716. const SYSTEM_EVENT S_INITIALIZE            = -9;
  717. const SYSTEM_EVENT S_CREATE                = -10;
  718. const SYSTEM_EVENT S_CLOSE                = -11;
  719. const SYSTEM_EVENT S_NON_CURRENT        = -13;
  720. const SYSTEM_EVENT S_MOVE                = -14;
  721. const SYSTEM_EVENT S_REDISPLAY            = -17;
  722. const SYSTEM_EVENT S_CLOSE_TEMPORARY    = -18;
  723. const SYSTEM_EVENT S_DEINITIALIZE        = -20;
  724. const SYSTEM_EVENT S_REGION_DEFINE        = -21;
  725. const SYSTEM_EVENT S_CASCADE            = -24;
  726. const SYSTEM_EVENT S_RESTORE            = -25;
  727. const SYSTEM_EVENT S_REGISTER_OBJECT    = -26;
  728.  
  729. const SYSTEM_EVENT S_POSITION            = -100;        // UI_POSITION information
  730.  
  731. const SYSTEM_EVENT S_SIZE                = -200;        // UI_REGION information
  732. const SYSTEM_EVENT S_CHANGE                = -201;
  733. const SYSTEM_EVENT S_DISPLAY_ACTIVE        = -202;
  734. const SYSTEM_EVENT S_DISPLAY_INACTIVE    = -203;
  735. const SYSTEM_EVENT S_CURRENT            = -204;
  736.  
  737. const SYSTEM_EVENT S_VSCROLL            = -300;        // UI_SCROLL_INFORMATION information
  738. const SYSTEM_EVENT S_HSCROLL            = -301;
  739. const SYSTEM_EVENT S_VSCROLL_SET         = -302;
  740. const SYSTEM_EVENT S_HSCROLL_SET         = -303;
  741. const SYSTEM_EVENT S_VSCROLL_CHECK         = -304;
  742. const SYSTEM_EVENT S_HSCROLL_CHECK         = -305;
  743.  
  744. const SYSTEM_EVENT S_ADD_OBJECT            = -400;        // void *, or special information
  745. const SYSTEM_EVENT S_SUBTRACT_OBJECT    = -401;
  746. const SYSTEM_EVENT S_RESET_DISPLAY        = -402;
  747.  
  748. const SYSTEM_EVENT S_VERIFY_STATUS        = -450;        // Motif private message!
  749.  
  750. const SYSTEM_EVENT S_MDICHILD_EVENT        = -500;
  751.  
  752. // --- LOGICAL_EVENT ---
  753. typedef EVENT_TYPE LOGICAL_EVENT;
  754. const LOGICAL_EVENT L_LOGICAL_FIRST        = 100;
  755. const LOGICAL_EVENT L_LOGICAL_LAST        = 9999;
  756.  
  757. const LOGICAL_EVENT L_EXIT                = 1000;    // general
  758. const LOGICAL_EVENT L_VIEW                = 1001;
  759. const LOGICAL_EVENT L_SELECT            = 1002;
  760. const LOGICAL_EVENT L_BEGIN_SELECT        = 1003;
  761. const LOGICAL_EVENT L_CONTINUE_SELECT    = 1004;
  762. const LOGICAL_EVENT L_END_SELECT        = 1005;
  763. const LOGICAL_EVENT L_BEGIN_ESCAPE        = 1006;
  764. const LOGICAL_EVENT L_CONTINUE_ESCAPE    = 1007;
  765. const LOGICAL_EVENT L_END_ESCAPE        = 1008;
  766. const LOGICAL_EVENT L_HELP                = 1009;
  767. const LOGICAL_EVENT L_CANCEL            = 1010;
  768. const LOGICAL_EVENT L_EXIT_FUNCTION        = 1011;
  769. const LOGICAL_EVENT L_DOUBLE_CLICK        = 1012;
  770. const LOGICAL_EVENT L_MOVE                = 1013;
  771. const LOGICAL_EVENT L_SIZE                = 1014;
  772.  
  773. const LOGICAL_EVENT L_NEXT_WINDOW        = 1040;    // window manager
  774.  
  775. const LOGICAL_EVENT L_UP                = 1050;    // window object
  776. const LOGICAL_EVENT L_DOWN                = 1051;
  777. const LOGICAL_EVENT L_LEFT                = 1052;
  778. const LOGICAL_EVENT L_RIGHT                = 1053;
  779. const LOGICAL_EVENT L_PREVIOUS            = 1054;
  780. const LOGICAL_EVENT L_NEXT                = 1055;
  781. const LOGICAL_EVENT L_FIRST                = 1056;
  782. const LOGICAL_EVENT L_TOP                = 1056;
  783. const LOGICAL_EVENT L_LAST                = 1057;
  784. const LOGICAL_EVENT L_BOTTOM            = 1057;
  785. const LOGICAL_EVENT L_PGUP                = 1058;
  786. const LOGICAL_EVENT L_PGDN                = 1059;
  787.  
  788. const LOGICAL_EVENT L_BEGIN_MARK        = 1101;    // string
  789. const LOGICAL_EVENT L_CONTINUE_MARK        = 1102;
  790. const LOGICAL_EVENT L_END_MARK            = 1103;
  791. const LOGICAL_EVENT L_CUT                = 1104;
  792. const LOGICAL_EVENT L_PASTE                = 1105;
  793. const LOGICAL_EVENT L_CUT_PASTE            = 1106;
  794. const LOGICAL_EVENT L_MARK                = 1107;
  795. const LOGICAL_EVENT L_COPY_MARK            = 1127;
  796. const LOGICAL_EVENT L_DELETE            = 1108;
  797. const LOGICAL_EVENT L_DELETE_WORD        = 1109;
  798. const LOGICAL_EVENT L_DELETE_EOL        = 1110;
  799. const LOGICAL_EVENT L_INSERT_TOGGLE        = 1114;
  800. const LOGICAL_EVENT L_WORD_LEFT            = 1115;
  801. const LOGICAL_EVENT L_WORD_RIGHT        = 1116;
  802. const LOGICAL_EVENT L_BOL                = 1117;
  803. const LOGICAL_EVENT L_EOL                = 1118;
  804. const LOGICAL_EVENT L_BACKSPACE            = 1119;
  805.  
  806. const LOGICAL_EVENT L_MDICHILD_EVENT    = 500;
  807.  
  808. // --- DESIGNER_EVENT (Private messages--Do Not Use!) ---
  809. typedef EVENT_TYPE DESIGNER_EVENT;
  810. const DESIGNER_EVENT D_DESIGNER_FIRST    = 5000;
  811. const DESIGNER_EVENT D_DESIGNER_LAST    = 9999;
  812.  
  813. const DESIGNER_EVENT D_SET_OBJECT        = 5000;
  814. const DESIGNER_EVENT D_EDIT_OBJECT        = 5001;
  815. const DESIGNER_EVENT D_SET_POSITION        = 5002;
  816. const DESIGNER_EVENT D_CREATE_OBJECT    = 6000;
  817.  
  818. // --- USER_EVENT ---
  819. typedef EVENT_TYPE USER_EVENT;
  820.  
  821. struct EXPORT UI_EVENT
  822. {
  823.     EVENT_TYPE type;
  824.     RAW_CODE rawCode;
  825.     RAW_CODE modifiers;
  826. #if defined(ZIL_MSWINDOWS)
  827.     MSG message;
  828. #elif defined(ZIL_OS2)
  829.     QMSG message;
  830. #elif defined(ZIL_MOTIF)
  831.     XEvent message;
  832. #endif
  833.  
  834.     union
  835.     {
  836.         UI_KEY key;
  837.         UI_REGION region;
  838.         UI_POSITION position;
  839.         UI_SCROLL_INFORMATION scroll;
  840.         void *data;
  841.     };
  842.  
  843.     UI_EVENT(void) :
  844.         type(0), rawCode(0), modifiers(0) { }
  845.     UI_EVENT(EVENT_TYPE _type, RAW_CODE _rawCode = 0) :
  846.         type(_type), rawCode(_rawCode), modifiers(0) { }
  847.     UI_EVENT(EVENT_TYPE _type, RAW_CODE _rawCode, const UI_KEY &_key) :
  848.         type(_type), rawCode(_rawCode), modifiers(0), key(_key) { }
  849.     UI_EVENT(EVENT_TYPE _type, RAW_CODE _rawCode, const UI_REGION &_region) :
  850.         type(_type), rawCode(_rawCode), modifiers(0), region(_region) { }
  851.     UI_EVENT(EVENT_TYPE _type, RAW_CODE _rawCode, const UI_POSITION &_position) :
  852.         type(_type), rawCode(_rawCode), modifiers(0), position(_position) { }
  853.     UI_EVENT(EVENT_TYPE _type, RAW_CODE _rawCode, const UI_SCROLL_INFORMATION &_scroll) :
  854.         type(_type), rawCode(_rawCode), modifiers(0), scroll(_scroll) { }
  855. #if defined(ZIL_MSWINDOWS) && defined(WIN32)
  856.     UI_EVENT(EVENT_TYPE type, HWND hWnd, UINT wMsg, WPARAM wParam, LPARAM lParam);
  857. #elif defined(ZIL_MSWINDOWS)
  858. #    if defined(__BCPLUSPLUS__) | defined(__TCPLUSPLUS__)
  859. #        if __BORLANDC__ >= 0x0410        // Set by Borland C++ version 3.1
  860.     UI_EVENT(EVENT_TYPE type, HWND hWnd, UINT wMsg, UINT wParam, LONG lParam);
  861. #        else
  862.     UI_EVENT(EVENT_TYPE type, HWND hWnd, WORD wMsg, WORD wParam, LONG lParam);
  863. #        endif
  864. #    else
  865.     UI_EVENT(EVENT_TYPE type, HWND hWnd, WORD wMsg, WORD wParam, LONG lParam);
  866. #    endif
  867. #elif defined(ZIL_OS2)
  868.     UI_EVENT(EVENT_TYPE type, HWND hWnd, ULONG msg, MPARAM mp1, MPARAM mp2);
  869. #elif defined(ZIL_MOTIF)
  870.     UI_EVENT(EVENT_TYPE _type, XEvent &xevent);
  871. #endif
  872. };
  873.  
  874. // ----- UI_DEVICE ----------------------------------------------------------
  875. typedef EVENT_TYPE DEVICE_STATE;
  876. const DEVICE_STATE D_OFF                = 0x0500;    // Device states
  877. const DEVICE_STATE D_ON                    = 0x0501;
  878. const DEVICE_STATE D_HIDE                = 0x0502;
  879. const DEVICE_STATE D_ACTIVATE            = 0x0503;
  880. const DEVICE_STATE D_DEACTIVATE            = 0x0504;
  881.  
  882. typedef EVENT_TYPE DEVICE_IMAGE;
  883. const DEVICE_IMAGE DC_INSERT            = 0x0510;    // Cursor types
  884. const DEVICE_IMAGE DC_OVERSTRIKE        = 0x0511;
  885.  
  886. const DEVICE_IMAGE DM_VIEW                = 0x0510;    // Mouse types
  887. const DEVICE_IMAGE DM_EDIT                = 0x0511;
  888. const DEVICE_IMAGE DM_WAIT                = 0x0512;
  889. const DEVICE_IMAGE DM_MOVE                = 0x0513;
  890. const DEVICE_IMAGE DM_HORIZONTAL        = 0x0514;
  891. const DEVICE_IMAGE DM_VERTICAL            = 0x0515;
  892. const DEVICE_IMAGE DM_DIAGONAL_ULLR        = 0x0516;
  893. const DEVICE_IMAGE DM_DIAGONAL_LLUR        = 0x0517;
  894. const DEVICE_IMAGE DM_POSITION            = 0x0518;
  895.  
  896. // Private ALT key state enum for UI_DEVICE.
  897. enum ALT_STATE
  898. {
  899.     ALT_NOT_PRESSED,
  900.     ALT_PRESSED_NO_EVENTS,
  901.     ALT_PRESSED_EVENTS
  902. };
  903.  
  904. class EXPORT UI_DEVICE : public UI_ELEMENT
  905. {
  906.     friend class EXPORT UI_EVENT_MANAGER;
  907. public:
  908.     static ALT_STATE altState;
  909.     static UI_DISPLAY *display;
  910.     static UI_EVENT_MANAGER *eventManager;
  911.  
  912.     int installed;
  913.     DEVICE_TYPE type;
  914.     DEVICE_STATE state;
  915.  
  916.     virtual ~UI_DEVICE(void);
  917.     virtual EVENT_TYPE Event(const UI_EVENT &event) = 0;
  918.  
  919.     // List members.
  920.     UI_DEVICE *Next(void) { return((UI_DEVICE *)next); }
  921.     UI_DEVICE *Previous(void) { return((UI_DEVICE *)previous); }
  922.  
  923. protected:
  924.     UI_DEVICE(DEVICE_TYPE _type, DEVICE_STATE _state);
  925.     static int CompareDevices(void *device1, void *device2);
  926.     virtual void Poll(void) = 0;
  927. };
  928.  
  929. // ----- UID_CURSOR ---------------------------------------------------------
  930.  
  931. class EXPORT UID_CURSOR : public UI_DEVICE
  932. {
  933. public:
  934.     static int blinkRate;
  935.  
  936.     DEVICE_IMAGE image;
  937.     UI_POSITION position;
  938.  
  939.     UID_CURSOR(DEVICE_STATE state = D_OFF, DEVICE_IMAGE image = DC_INSERT);
  940.     virtual ~UID_CURSOR(void);
  941.     virtual EVENT_TYPE Event(const UI_EVENT &event);
  942.  
  943. protected:
  944.     UI_POSITION offset;
  945.  
  946.     virtual void Poll(void);
  947. };
  948.  
  949. // ----- UID_KEYBOARD -------------------------------------------------------
  950.  
  951. class EXPORT UID_KEYBOARD : public UI_DEVICE
  952. {
  953. public:
  954.     static EVENT_TYPE breakHandlerSet;
  955.  
  956.     UID_KEYBOARD(DEVICE_STATE state = D_ON);
  957.     virtual ~UID_KEYBOARD(void);
  958.     virtual EVENT_TYPE Event(const UI_EVENT &event);
  959.  
  960. protected:
  961.     virtual void Poll(void);
  962. };
  963.  
  964. // ----- UID_MOUSE ----------------------------------------------------------
  965.  
  966. #if defined(_MSC_VER) && defined(ZIL_MSDOS)
  967. extern "C" void MouseISR(void);
  968. #endif
  969.  
  970. class EXPORT UID_MOUSE : public UI_DEVICE
  971. {
  972. #if defined(ZIL_MSDOS)
  973. #    if defined(__ZTC__)
  974.     friend void _cdecl MouseISR(unsigned, unsigned, unsigned, unsigned);
  975. #    elif defined(__BCPLUSPLUS__) | defined(__TCPLUSPLUS__)
  976.     friend void MouseISR(void);
  977. #    endif
  978. #endif
  979. public:
  980.     DEVICE_IMAGE image;
  981.     UI_POSITION position;
  982.  
  983.     UID_MOUSE(DEVICE_STATE state = D_ON, DEVICE_IMAGE image = DM_WAIT);
  984.     virtual ~UID_MOUSE(void);
  985.     virtual EVENT_TYPE Event(const UI_EVENT &event);
  986.  
  987. protected:
  988.     UI_POSITION offset;
  989.  
  990.     virtual void Poll(void);
  991. };
  992.  
  993. // ----- UI_EVENT_MANAGER ---------------------------------------------------
  994.  
  995. // --- Q_FLAGS ---
  996. typedef unsigned Q_FLAGS;
  997. const Q_FLAGS Q_NORMAL                    = 0x0000;    // block, begin, destroy and poll
  998. const Q_FLAGS Q_BLOCK                    = 0x0000;
  999. const Q_FLAGS Q_NO_BLOCK                = 0x0001;
  1000. const Q_FLAGS Q_BEGIN                    = 0x0000;
  1001. const Q_FLAGS Q_END                        = 0x0002;
  1002. const Q_FLAGS Q_DESTROY                    = 0x0000;
  1003. const Q_FLAGS Q_NO_DESTROY                = 0x0004;
  1004. const Q_FLAGS Q_POLL                    = 0x0000;
  1005. const Q_FLAGS Q_NO_POLL                    = 0x0008;
  1006.  
  1007. class EXPORT UI_QUEUE_ELEMENT : public UI_ELEMENT
  1008. {
  1009. public:
  1010.     UI_QUEUE_ELEMENT(void);
  1011.     ~UI_QUEUE_ELEMENT(void);
  1012.     UI_EVENT event;
  1013.  
  1014.     UI_QUEUE_ELEMENT *Next(void) { return((UI_QUEUE_ELEMENT *)next); }
  1015.     UI_QUEUE_ELEMENT *Previous(void) { return((UI_QUEUE_ELEMENT *)previous); }
  1016. };
  1017.  
  1018. class EXPORT UI_QUEUE_BLOCK : public UI_LIST_BLOCK
  1019. {
  1020. public:
  1021.     UI_QUEUE_BLOCK(int noOfElements);
  1022.     ~UI_QUEUE_BLOCK(void);
  1023.  
  1024.     UI_QUEUE_ELEMENT *Current(void) { return((UI_QUEUE_ELEMENT *)current); }
  1025.     UI_QUEUE_ELEMENT *First(void) { return((UI_QUEUE_ELEMENT *)first); }
  1026.     UI_QUEUE_ELEMENT *Last(void) { return((UI_QUEUE_ELEMENT *)last); }
  1027. };
  1028.  
  1029. class EXPORT UI_EVENT_MANAGER : public UI_LIST
  1030. {
  1031. public:
  1032.     UI_EVENT_MANAGER(UI_DISPLAY *display, int noOfElements = 100);
  1033.     virtual ~UI_EVENT_MANAGER(void);
  1034.     EVENT_TYPE DevicePosition(DEVICE_TYPE deviceType, int column, int line);
  1035.     EVENT_TYPE DeviceState(DEVICE_TYPE deviceType, DEVICE_STATE deviceState);
  1036.     EVENT_TYPE DeviceImage(DEVICE_TYPE deviceType, DEVICE_IMAGE deviceImage);
  1037.     virtual EVENT_TYPE Event(const UI_EVENT &event, DEVICE_TYPE deviceType = E_DEVICE);
  1038.     virtual int Get(UI_EVENT &event, Q_FLAGS flags = Q_NORMAL);
  1039.     virtual void Put(const UI_EVENT &event, Q_FLAGS flags = Q_END);
  1040.     Q_FLAGS QFlags(void) { return (qFlags); }
  1041.  
  1042.     // List members.
  1043.     void Add(UI_DEVICE *device);
  1044.     UI_DEVICE *Current(void) { return((UI_DEVICE *)current); }
  1045.     UI_DEVICE *First(void) { return((UI_DEVICE *)first); }
  1046.     UI_DEVICE *Last(void) { return((UI_DEVICE *)last); }
  1047.     void Subtract(UI_DEVICE *device);
  1048.     UI_EVENT_MANAGER &operator+(UI_DEVICE *device) { Add(device); return(*this); }
  1049.     UI_EVENT_MANAGER &operator-(UI_DEVICE *device) { Subtract(device); return(*this); }
  1050.  
  1051.     // --- Version 2.0 and 1.0 compatibility ---
  1052.     UI_EVENT_MANAGER(int noOfElements, UI_DISPLAY *display);
  1053.  
  1054. protected:
  1055.     int level;
  1056.     Q_FLAGS qFlags;
  1057.     UI_DISPLAY *display;
  1058.     UI_QUEUE_BLOCK queueBlock;
  1059. #if defined(ZIL_OS2)
  1060.     HMQ hmq;
  1061. #endif
  1062. };
  1063.  
  1064. #endif // UI_EVT_HPP
  1065.  
  1066.  
  1067.